﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using log4net;
using System.IO;
using Telerik.WinControls;
using Telerik.WinControls.UI.Export;
namespace QuanLyNhaSach
{
    public partial class frmBC_HangBanTraLai : Form
    {
        public frmBC_HangBanTraLai()
        {
            InitializeComponent();
        }

        //Tao Parttern Seleton
        static frmBC_HangBanTraLai doituong = null;
        private ILog logger;
        sv_QuanLyNhaSach.AdapterClient service = new sv_QuanLyNhaSach.AdapterClient();
        public static frmBC_HangBanTraLai TaoDoiTuong()
        {
            if (doituong == null)
                doituong = new frmBC_HangBanTraLai();
            return doituong;
        }
        string batdau = "";
        string ketthuc = "";
        private void frmBC_HangBanTraLai_Load(object sender, EventArgs e)
        {
            dtp_ketthuc.Value = DateTime.Today;
            logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
            try
            {
                Load_Phieutrahang();
            }
            catch (Exception ex)
            {
                logger.Error("Error: " + ex.Message);
            }
        }
        private void Load_Phieutrahang()
        {
            try
            {
                batdau = dtp_batdau.Value.Month + "/" + dtp_batdau.Value.Day + "/" + dtp_batdau.Value.Year;
                ketthuc = dtp_ketthuc.Value.Month + "/" + dtp_ketthuc.Value.Day + "/" + dtp_ketthuc.Value.Year;
                DataSet ds = new DataSet();
                ds.ReadXml(new StringReader(service.selectqueryByText("select MaKHTH,n.HoTenNV+' - '+n.MaNV as nhanvien,k.HoTenKH+ ' - '+k.MaKH as khachhang,TongThanhTien,NgayTra,ChungTuTra,GhiChuTH from PhieuKHTraHang p,NhanVien n,KhachHang k where p.MaNV=n.MaNV and p.MaKH=k.MaKH and NgayTra between '" + batdau + "' and '" + ketthuc + "' ")));
                if (ds.Tables.Count > 0)
                {
                    ds.Tables[0].Columns.Add("stt", typeof(int));
                    DataRow dr;
                    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                    {
                        dr = ds.Tables[0].NewRow();
                        dr["stt"] = i + 1;
                        ds.Tables[0].Rows[i]["stt"] = dr["stt"].ToString();
                        ds.Tables[0].Rows[i]["TongThanhTien"] = double.Parse(ds.Tables[0].Rows[i]["TongThanhTien"].ToString()).ToString("#,##0");
                        ds.Tables[0].Rows[i]["NgayTra"] = DateTime.Parse(ds.Tables[0].Rows[i]["NgayTra"].ToString()).Day.ToString("00") + "/" + DateTime.Parse(ds.Tables[0].Rows[i]["NgayTra"].ToString()).Month.ToString("00") + "/" + DateTime.Parse(ds.Tables[0].Rows[i]["NgayTra"].ToString()).Year.ToString("0000");
                    }
                    gv_trahang.DataSource = ds.Tables[0];
                }
                else
                {
                    gv_trahang.DataSource = null;
                    gv_cttrahang.DataSource = null;
                }
            }
            catch
            {
            }
        }
        private void Load_CTTrahang()
        {
            try
            {
                string mapth = gv_trahang.CurrentRow.Cells["MaKHTH"].Value.ToString().Trim();
                DataSet ds = new DataSet();
                ds.ReadXml(new StringReader(service.selectqueryByText("select ct.MaMH, mh.TenMH, SoLuong, DonGia, ChietKhau , ThanhTien  from ChiTietKHTraHang ct, MatHang mh where ct.MaMH= mh.MaMH and MaKHTH='" + mapth + "'")));
                if (ds.Tables.Count > 0)
                {
                    ds.Tables[0].Columns.Add("stt", typeof(int));
                    DataRow dr;
                    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                    {
                        dr = ds.Tables[0].NewRow();
                        dr["stt"] = i + 1;
                        ds.Tables[0].Rows[i]["stt"] = dr["stt"].ToString();
                        ds.Tables[0].Rows[i]["ThanhTien"] = double.Parse( ds.Tables[0].Rows[i]["ThanhTien"].ToString()).ToString("#,##0");
                    }
                    gv_cttrahang.DataSource = ds.Tables[0];
                }
            }
            catch
            {
            }
        }
        private void bt_loc_Click(object sender, EventArgs e)
        {
            try
            {
                errorProvider1.Clear();
                if (dtp_batdau.Value > DateTime.Now)
                {
                    errorProvider1.SetError(dtp_batdau, "Ngày bắt đầu phải nhỏ hơn hoặc bằng ngày hiện tại");
                }
                else if (dtp_ketthuc.Value > DateTime.Now)
                {
                    errorProvider1.SetError(dtp_ketthuc, "Ngày đến phải nhỏ hơn hoặc bằng ngày hiện tại");
                }
                else if ((DateTime.Now.Year - dtp_batdau.Value.Year) > 5)
                {
                    errorProvider1.SetError(dtp_batdau, "Năm bắt đầu không lâu 5 năm so với năm nay");
                }
                else if ((DateTime.Now.Year - dtp_ketthuc.Value.Year) > 5)
                {
                    errorProvider1.SetError(dtp_ketthuc, "Năm đến không lâu 5 năm so với năm nay");
                }
                else if (dtp_batdau.Value > dtp_ketthuc.Value)
                {
                    errorProvider1.SetError(dtp_ketthuc, "Ngày kết thúc phải lớn hơn ngày bắt đầu!");
                }
                else
                {
                    Load_Phieutrahang();
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message);
            }
        }

        private void gv_trahang_SelectionChanged(object sender, EventArgs e)
        {
            try
            {
                if (gv_trahang.DataSource != null)
                {
                    Load_CTTrahang();
                }
                else
                    gv_cttrahang.DataSource = null;

            }
            catch
            {
            }
        }
        bool openExportFile = false;
        private bool exportVisualSettings;
        private void bt_excel_Click(object sender, EventArgs e)
        {
            saveFileDialog1.Filter = "Excel (*.xls)|*.xls";
            if (saveFileDialog1.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            if (saveFileDialog1.FileName.Equals(String.Empty))
            {
                RadMessageBox.SetThemeName(this.gv_trahang.ThemeName);
                RadMessageBox.Show("Làm ơn nhập tên file.");
                return;
            }
            string fileName = this.saveFileDialog1.FileName;

            ExportToExcelML excelExporter = new ExportToExcelML(this.gv_trahang);

            excelExporter.SheetMaxRows = ExcelMaxRows._1048576;
            excelExporter.ExportVisualSettings = this.exportVisualSettings;


            try
            {
                excelExporter.RunExport(fileName);

                RadMessageBox.SetThemeName(this.gv_trahang.ThemeName);
                DialogResult dr = RadMessageBox.Show("Dữ liệu trong Grid đã được in thành công. Bạn có muốn mở file này không?",
                    "Export to Excel", MessageBoxButtons.YesNo, RadMessageIcon.Question);
                if (dr == DialogResult.Yes)
                {
                    openExportFile = true;
                }
            }
            catch (IOException ex)
            {
                RadMessageBox.SetThemeName(this.gv_trahang.ThemeName);
                RadMessageBox.Show(this, ex.Message, "I/O Error", MessageBoxButtons.OK, RadMessageIcon.Error);
            }
        }

        private void bt_xemin_Click(object sender, EventArgs e)
        {
            try
            {
                errorProvider1.Clear();
                Report.frm_BC_KHTraHang khtrahang = new Report.frm_BC_KHTraHang();
                if (dtp_batdau.Value > DateTime.Now)
                {
                    errorProvider1.SetError(dtp_batdau, "Ngày bắt đầu phải nhỏ hơn hoặc bằng ngày hiện tại");
                }
                else if (dtp_ketthuc.Value > DateTime.Now)
                {
                    errorProvider1.SetError(dtp_ketthuc, "Ngày đến phải nhỏ hơn hoặc bằng ngày hiện tại");
                }
                else if ((DateTime.Now.Year - dtp_batdau.Value.Year) > 5)
                {
                    errorProvider1.SetError(dtp_batdau, "Năm bắt đầu không lâu 5 năm so với năm nay");
                }
                else if ((DateTime.Now.Year - dtp_ketthuc.Value.Year) > 5)
                {
                    errorProvider1.SetError(dtp_ketthuc, "Năm đến không lâu 5 năm so với năm nay");
                }
                else if (dtp_batdau.Value > dtp_ketthuc.Value)
                {
                    errorProvider1.SetError(dtp_ketthuc, "Ngày kết thúc phải lớn hơn ngày bắt đầu!");
                }
                else
                {
                    khtrahang.TuNgay = dtp_batdau.Value;
                    khtrahang.DenNgay = dtp_ketthuc.Value;
                    khtrahang.ShowDialog();
                }
            }
            catch (Exception ex)
            {

            }
        }

        private void bt_thoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
